import json
lst = [
    ('tu1', 'tn1', 'lu1', 'ln1'),
    ('tu1', 'tn1', 'lu2', 'ln2'),
    ('tu1', 'tn1', 'lu3', 'ln3'),
    ('tu1', 'tn1', 'lu4', 'ln4'),
    ('tu2', 'tn2', 'lu1', 'ln1'),
    ('tu2', 'tn2', 'lu2', 'ln2'),
    ('tu2', 'tn2', 'lu3', 'ln3'),
    ('tu2', 'tn2', 'lu4', 'ln4'),
    ('tu2', 'tn2', 'lu5', 'ln5'),
]
d = {}
for tu, tn, lu, ln in lst:
    if not tu in d:
        d[tu] = {
            'tn':tn,
            'l':[
                (lu, ln),
            ]
        }
        continue
    if not (lu, ln) in d[tu]['l']:
        d[tu]['l'].append((lu, ln))
        
l = []
for i in d:
    l.append(
        {
            "tu": i,
            "tn": d[i]['tn'],
            "ls":list(d[i]['l'])
        }
    )
print json.dumps(l, indent=4, separators=(',', ': '))
